// 版权2019 etcd作者
// 
// 根据Apache许可证2.0版（以下简称“许可证”）获得许可；
// 除非遵守许可证，否则不得使用此文件。
// 您可以通过
// 
// www.apache.org/licenses/LICENSE-2.0 
// 
// 除非适用法律要求或书面同意，否则根据许可证分发的软件
// 按“原样”分发，
// 无任何明示或暗示的保证或条件。
// 请参阅许可证，了解管理许可的特定语言和
// 许可证下的限制。

package tracker

// StateType是被跟踪跟随者的状态。
type StateType uint64

const (
	// StateProbe表示最后一个索引未知的跟随者。这样的跟随者被“探测”（即定期发送的附加）以缩小其最后一个索引的范围。在理想（和常见）的情况下，只需要一轮试探
	// 就可以了，因为跟随者会给出提示。长期处于
	// 状态的追随者通常处于离线状态。
	StateProbe StateType = iota
	// StateReplicate是一种稳定状态，在这种状态下，跟随者急切地接收要附加到其日志中的
	// 日志项。
	StateReplicate
	// statesnashot表示需要日志项的跟随者不可用
	// 来自领导者的筏形日志。这样的跟随者需要一个完整的快照才能返回StateReplicate。
	StateSnapshot
)

var prstmap = [...]string{
	"StateProbe",
	"StateReplicate",
	"StateSnapshot",
}

func (st StateType) String() string { return prstmap[uint64(st)] }
